<HTML><HEAD> <!-- ----------- Spreadsheet ----------- --> <SCRIPT LANGUAGE="JavaScript"><!-- hide from old browsers /* THE JAVASCRIPT COOKBOOK by Erica Sadun, webrx@mindspring.com Copyright (c)1998 by Charles River Media. All Rights Reserved. This applet can only be re-used or modifed by license holders of the JavaScript Cookbook CD-ROM. Credit must be given in the source code and this copyright notice must be maintained. If you do not hold a license to the JavaScript Cookbook, you may NOT duplicate or modify this code for your own use. Use at your own risk. No warranty is given or implied of the suitability of this applet for any specific application. Neither Erica Sadun nor Charles River Media will be held responsible for any unwanted effects due to the use of this applet or any derivative. */ // --------------------Spreadsheet Functions--------------------- var sheetWidth = 6 var sheetHeight = 6 // Recalculate after a change is detected function recalculate() { var s = 0 // Row sums for (var j = 1; j < (sheetHeight -1); j++) { var sum = 0 for (var i = 1; i < (sheetWidth-1); i++) { var tmpResult = parseInt(eval("document.forms[0].CELL"+i+"X"+j+".value")); if(isNaN(tmpResult) tmpResult = 0; sum += tmpResult; } eval("document.forms[0].CELL"+(sheetWidth-1)+"X"+j+".value = "+sum) } // Column sums for (var i = 1; i < (sheetWidth); i++) { var sum = 0 for (var j = 1; j < (sheetHeight-1); j++) { sum += parseInt(eval("document.forms[0].CELL"+i+"X"+j+".value")) } eval("document.forms[0].CELL"+i+"X"+(sheetHeight-1)+".value = "+sum) } } // Create the Spreadsheet function startSheet() { document.write("<FORM><TABLE>") for (var j = 0; j < sheetHeight; j++) { document.write("<TR>") for (var i = 0; i < sheetWidth; i++) { document.write("<TD ALIGN=CENTER>") document.write("<INPUT TYPE='TEXT' SIZE=6 "+ " NAME = 'CELL"+i+"X"+j+"' ") if ((i == 0) || (j == 0)) document.write(" VALUE='Text' ") else document.write(" VALUE='0' ") document.write(" onChange='recalculate()'></TD>") } document.write("</TR>") } document.write("</TABLE></FORM>") } <!-- done hiding --></SCRIPT></HEAD> <BODY bgcolor="ffffff"> <FONT COLOR="007777"><H1><IMG SRC="../GRAFX/UTENS.JPG" WIDTH=80 HEIGHT=50 ALIGN = CENTER>Spreadsheet</H1></FONT> <BLOCKQUOTE><FONT COLOR="770000"> Use this very simple JavaScript spreadsheet to help with your sums. Enter numbers in the middle cells and they will be summed to the sides and bottoms of the sheet. After you type in each cell, press the tab key or click in another cell to activate the "changed" property. <b>Be patient!</b> It may take a second to load. </FONT></BLOCKQUOTE> <SCRIPT> // Create a New Spreadsheet startSheet() </SCRIPT> <FONT COLOR="007777"><H2>Discussion</H2></FONT> <FONT SIZE=4> This Spreadsheet shows highlights JavaScript's flexibility. JavaScript itself generates the spreadsheet from the two variables <FONT COLOR="770000">sheetHeight</FONT> and <FONT COLOR="770000">sheetWidth</FONT>. The entire creation function is shown below. Border cells are marked with the string "text" to indicate they are not included in calculations. OnChange events trigger recalculation. </FONT> </FONT><FONT COLOR="770000"><PRE> // Create the Spreadsheet function startSheet() { document.write("<FORM><TABLE>") for (var j = 0; j < sheetHeight; j++) { document.write("<TR>") for (var i = 0; i < sheetWidth; i++) { document.write("<TD ALIGN=CENTER>") document.write("<INPUT TYPE='TEXT' SIZE=6 "+ " NAME = 'CELL"+i+"X"+j+"' ") if ((i == 0) || (j == 0)) document.write(" VALUE='Text' ") else document.write(" VALUE='0' ") document.write(" onChange='recalculate()'></TD>") } document.write("</TR>") } document.write("</TABLE></FORM>") } </PRE></FONT> </FONT></BLOCKQUOTE> <h5>Copyright ©1996 by Charles River Media, All Rights Reserved</h5> </BODY> </HTML>